language: go

matrix:
  include:
  - go: 1.14.x
    env: VET=1 GO111MODULE=on
  - go: 1.14.x
    env: RACE=1 GO111MODULE=on
  - go: 1.14.x
    env: RUN386=1
  - go: 1.14.x
    env: GRPC_GO_RETRY=on
  - go: 1.14.x
    env: TESTEXTRAS=1
  - go: 1.13.x
    env: GO111MODULE=on
  - go: 1.12.x
    env: GO111MODULE=on
  - go: 1.11.x  # Keep until interop tests no longer require Go1.11
    env: GO111MODULE=on

go_import_path: google.golang.org/grpc

before_install:
  - if [[ "${GO111MODULE}" = "on" ]]; then mkdir "${HOME}/go"; export GOPATH="${HOME}/go"; fi
  - if [[ -n "${RUN386}" ]]; then export GOARCH=386; fi
  - if [[ "${TRAVIS_EVENT_TYPE}" = "cron" && -z "${RUN386}" ]]; then RACE=1; fi
  - if [[ "${TRAVIS_EVENT_TYPE}" != "cron" ]]; then export VET_SKIP_PROTO=1; fi

install:
  - try3() { eval "$*" || eval "$*" || eval "$*"; }
  - try3 'if [[ "${GO111MODULE}" = "on" ]]; then go mod download; else make testdeps; fi'
  - if [[ -n "${GAE}" ]]; then source ./install_gae.sh; make testappenginedeps; fi
  - if [[ -n "${VET}" ]]; then ./vet.sh -install; fi

script:
  - set -e
  - if [[ -n "${TESTEXTRAS}" ]]; then examples/examples_test.sh; interop/interop_test.sh; make testsubmodule; exit 0; fi
  - if [[ -n "${VET}" ]]; then ./vet.sh; fi
  - if [[ -n "${GAE}" ]]; then make testappengine; exit 0; fi
  - if [[ -n "${RACE}" ]]; then make testrace; exit 0; fi
  - make test
